package goboot

import "net/http"

var WebUrlAspectList []WebUrlAspect

//接口切面
type WebUrlAspect interface {
	//匹配切面，可以根据webDocMethod匹配是否需要执行该切面
	MathchAspect(webDocMethod *WebDocMethod) bool
	//执行切面逻辑先于controller
	//r为http请求
	//paramMap为请求参数，可修改，可添加，可删除。
	DoAspect(r *http.Request, paramMap *map[string][]any) error
	//执行切面逻辑后于controller
	//returnValue为返回数据
	//reRrr为返回的错误信息
	DoAspectAfter(returnValue any, reRrr error)
}

// 添加切面Aspect
func AddWebUrlAspect(aspect WebUrlAspect) {
	WebUrlAspectList = append(WebUrlAspectList, aspect)
}
